﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace planetExpressLib
{
    public class oficinaCAD
    {
        private List<oficinaEN> allOficinas;
        string cadena;
     
        public oficinaCAD()
        {
            allOficinas = new List<oficinaEN>();
            cadena = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ToString();
        }

        public void insert(oficinaEN oficina)
        {
            SqlConnection c = new SqlConnection(cadena);

            try
            {
                c.Open();

                string sentencia = "INSERT INTO OFICINA (Pais, Provincia, Ciudad, Direccion, Telefono, Email, Horario) VALUES('";
                sentencia += oficina.Pais + "', '";
                sentencia += oficina.Provincia + "', '";
                sentencia += oficina.Ciudad + "', '";
                sentencia += oficina.Direccion + "', '";
                sentencia += oficina.Telefono + "', '";
                sentencia += oficina.Email + "', '";
                sentencia += oficina.Horario + "')";

                SqlCommand com = new SqlCommand(sentencia, c);

                com.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                c.Close();
            }
        }

        public void update(oficinaEN oficina)
        {
            SqlConnection c = new SqlConnection(cadena);

            try
            {
                c.Open();

                string sentencia = "UPDATE RESERVA SET ";
                sentencia += "Pais = '" + oficina.Pais;
                sentencia += "', Provincia = '" + oficina.Provincia;
                sentencia += "',  Ciudad = '" + oficina.Ciudad;
                sentencia += "',  Direccion = '" + oficina.Direccion;
                sentencia += "',  Telefono = '" + oficina.Telefono;
                sentencia += "',  Email = '" + oficina.Email;
                sentencia += "',  Horario = '" + oficina.Horario;
                sentencia += "WHERE Id = '" + oficina.IdOficina;
                sentencia += "'";

                SqlCommand com = new SqlCommand(sentencia, c);

                com.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                c.Close();
            }
        }

        public void delete(int id)
        {
            SqlConnection c = new SqlConnection(cadena);

            try
            {
                c.Open();

                string sentencia = "DELETE FROM OFICINA WHERE Id = " + id;

                SqlCommand com = new SqlCommand(sentencia, c);

                com.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                c.Close();
            }
        }

        public oficinaEN readID(int id)
        {
            oficinaEN oficina = null;

            try
            {
                SqlConnection c = new SqlConnection(cadena);
                DataTable tabla = new DataTable();
                DataRow row;

                string sentencia = "SELECT * FROM OFICINA WHERE Id = '" + id + "'";
                SqlCommand cmd = new SqlCommand(sentencia, c);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(tabla);
                row = tabla.Rows[0];

                oficina = new oficinaEN();

                if (row[0] != null) oficina.IdOficina = Int32.Parse(row[0].ToString());
                else oficina.IdOficina = -1;

                if (row[1] != null) oficina.Pais = row[1].ToString();
                else oficina.Pais = "";

                if (row[2] != null) oficina.Provincia = row[2].ToString();
                else oficina.Provincia = "";

                if (row[3] != null) oficina.Ciudad = row[3].ToString();
                else oficina.Ciudad = "";

                if (row[4] != null) oficina.Direccion = row[4].ToString();
                else oficina.Direccion = "";

                if (row[5].ToString() != "NULL") oficina.Telefono = Int32.Parse(row[5].ToString());
                else oficina.Telefono = 0;

                if (row[6] != null) oficina.Email = row[6].ToString();
                else oficina.Email = "";

                if (row[7] != null) oficina.Horario = row[7].ToString();
                else oficina.Horario = "";
            }
            catch (Exception)
            {
            }

            return oficina;
        }

        public List<oficinaEN> readAll()
        {
            SqlConnection c = new SqlConnection(cadena);
            SqlDataReader dr = null;
            oficinaEN nueva = null;

            try
            {
                c.Open();

                string sentencia = "SELECT * FROM OFICINA";

                SqlCommand com = new SqlCommand(sentencia, c);

                dr = com.ExecuteReader();

                while (dr.Read())
                {
                    nueva.IdOficina = (int)dr["Id"];
                    nueva.Pais = dr["Pais"].ToString();
                    nueva.Provincia = dr["Provincia"].ToString();
                    nueva.Ciudad = dr["Ciudad"].ToString();
                    nueva.Telefono = (int)dr["Telefono"];
                    nueva.Email = dr["Email"].ToString();
                    nueva.Horario = dr["Horario"].ToString();


                    allOficinas.Add(nueva);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dr.Close();
                c.Close();
            }

            return allOficinas;
        }

        public DataTable readPais(string pais)
        {
            SqlConnection c = new SqlConnection(cadena);
            DataTable tabla = new DataTable();

            string sentencia = "SELECT Id, Ciudad FROM OFICINA WHERE Pais = '" + pais + "'";
            SqlCommand cmd = new SqlCommand(sentencia, c);
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);

            adapter.Fill(tabla);

            return tabla;
        }

    }


}